Purpose: Get a predefined aggregate property set for an object.
Inputs:
objectRef_t The object ref.
infoVersion_i The version of the FSObjectInformation data record
specified by objectInfo_o.
Outputs:
objectInfo_o The aggregate property data (optional).
objectName_o The name of the specified object (optional).
Notes:
Use kFSInfoCurrentReleasedVersion for infoVersion_i to specify the latest
version of the FSObjectInformation record. infoVersion_i is ignored
if objectInfo_o is omitted.
objectName_o, if specified, must reference a preinitialized persistent
TextObject of sufficient size to contain the object's name.
}
FUNCTION FSObjectGetInformation(objectRef_t: FSObjectRef; infoVersion_i: FSInfoVersion; VAR objectInfo_o: FSObjectInformation; objectName_o: FSName): OSStatus; C;
{
Function: FSObjectGetVolumeInformation
Purpose: Get a predefined aggregate property set for a volume object.
Inputs:
volumeItemRef_t The object ref of a file or folder on the volume or
the volume itself.
infoVersion_i The version of the FSObjectInformation data record
specified by volumeInfo_o.
Outputs:
volumeInfo_o The aggregate volume property data (optional).
volumeObjectRef_o The object ref of the volume (optional).
volumeName_o The name of the volume (optional).
Notes:
Use kFSInfoCurrentReleasedVersion for infoVersion_i to specify the latest
version of the FSObjectInformation record. infoVersion_i is ignored
if volumeInfo_o is omitted.
volumeName_o, if specified, must reference a preinitialized persistent
TextObject of sufficient size to contain the volume's name.
This function is functionally equivalent to FSObjectGetInformation when
the target object ref is the volume's object ref.
}
FUNCTION FSObjectGetVolumeInformation(volumeItemRef_t: FSObjectRef; infoVersion_i: FSInfoVersion; VAR volumeInfo_o: FSObjectInformation; VAR volumeObjectRef_o: FSObjectRef; volumeName_o: FSName): OSStatus; C;
{
Function: FSObjectSetOneProperty
Purpose: Set one property attribute of an object.
Inputs:
objectRef_t The object ref.
property_i The property attribute to set.
propertySize_i The size of the property buffer specified
by propertyValue_i.
propertyData_i The new property data.
Outputs:
Notes:
Fork property values must be changed by using the stream or mapped
Purpose: Iterate to the next object in the current container and get
aggregate property information.
Inputs:
iterator_t The object iterator.
objectInfoVersion_i The version of the FSObjectInformation data record
specified by objectInfo_o.
Outputs:
objectInfo_o Aggregate property information about the current
iterator object (optional).
objectRef_o The object ref of the current iterator object (optional).
objectName_o The name of the current iterator object (optional).
Notes:
Use kFSInfoCurrentReleasedVersion for infoVersion_i to specify the latest
version of the FSObjectInformation record. infoVersion_i is ignored
if objectInfo_o is omitted.
objectName_o, if specified, must reference a preinitialized persistent
TextObject of sufficient size to contain the object's name.
If the iterator has reached the end of it's current container, then an
exception will be returned.
}
FUNCTION FSObjectIterateOnce(iterator_t: FSObjectIteratorObjID; objectInfoVersion_i: FSInfoVersion; VAR objectInfo_o: FSObjectInformation; VAR objectRef_o: FSObjectRef; objectName_o: FSName): OSStatus; C;
{
Function: FSObjectIteratorChangeCurrentScope
Purpose: Move an object iterator into or out of a container.
Inputs:
iterator_t The object iterator.
movement_i The direction to move: into or out of a container.
Outputs:
Notes:
If movement_i is kFSObjectEnter, then the iterator must be positioned on
an object that is capable of containing other objects; it does not need to
actually contain any objects at that time. That object will become the new
current scope of the iterator and it will be in Start Of Iteration state
(meaning that all objects in the current scope have yet to be returned).
The iterator will not be positioned on any object.
If movement_i is kFSObjectExit, then the current scope will become the object
that contains the current scope; the iterator's new position will be the object
that was the current scope. If the current scope and the outermost scope were
the same, then the outermost scope will also change to the new current scope and
E_ExitIteratorScope is returned (so that you realize you will be iterating outside
of the scope that you used to create the iterator; the iterator remains usable).
Object iterators keep track of all of the objects between the outermost scope and
the current scope (this is known as the "scope stack"). If any object in the scope
stack is moved, the iterator is invalidated and will return the error
E_IteratorScopeException until it has been explicitly fixed (by FSObjectIteratorRecreate)
or disposed. This call adds or removes objects from the scope stack.
}
FUNCTION FSObjectIteratorChangeCurrentScope(iterator_t: FSObjectIteratorObjID; movement_i: FSObjectIteratorMovement): OSStatus; C;
{
Function: FSObjectIteratorCreate
Purpose: Create an iterator for iterating over objects.
Inputs:
outermostScope_t The initial outermost scope and current scope.
options_i Controls whether the iterator will traverse objects in
a single container or all embedded (nested) containers.
Also controls which kinds of objects will be returned.
Outputs:
iterator_o The object iterator.
Notes:
The outermost scope and current scope of the iterator are set to outermostScope_t.
The iterator is not positioned on any object, though it is inside outermostScope_t.
OutermostScope_t must be an object capable of containing other objects (such as the
Universe, a volume set, a volume, or a folder). The iterator is put into "Start Of
Iteration" state, meaning that all objects in the current scope have yet to be
returned.
The File Manager allocates resources and maintains state for every iterator. When
you have finished using an iterator, you should call FSObjectIteratorDispose to dispose
of it.
}
FUNCTION FSObjectIteratorCreate(outermostScope_t: FSObjectRef; options_i: FSObjectIteratorCreationOptions; VAR iterator_o: FSObjectIteratorObjID): OSStatus; C;
{
Function: FSObjectIteratorDispose
Purpose: Dispose of an object iterator.
Inputs:
iterator_t The object iterator.
Outputs:
Notes:
The File Manager will dispose of the iterator and release any resources
allocated to the iterator. Further attempts to use the iterator will result
in an error.
}
FUNCTION FSObjectIteratorDispose(iterator_t: FSObjectIteratorObjID): OSStatus; C;
{
Function: FSObjectIteratorRestart
Purpose: Place an object iterator in the Start Of Iterator state, in its current scope.
Inputs:
iterator_t The object iterator.
Outputs:
Notes:
The iterator is not positioned on any object. The iterator is put into "Start Of
Iteration" state, meaning that all objects in the current scope have yet to be
returned.
You would use this call to completely restart iteration within the current scope,
ignoring any state about objects previously returned in the current scope. The
outermost scope is not affected. State information about which objects have been
returned from scopes outside the current scope is unchanged.
}
FUNCTION FSObjectIteratorRestart(iterator_t: FSObjectIteratorObjID): OSStatus; C;